624f9affdc27c8efe6443e03e89259dbe51d08dd,archetype-testing/archetype-final/src/test/java/org/apache/maven/archetype/test/ArchetyperRoundtripIT.java,ArchetyperRoundtripIT,testArchetyper,#,58
Before Change
"target" + File.separator + "generated-sources" + File.separator
+ "archetype" );
File generatedArchetypePom = new File( generatedArchetypeDirectory, "pom.xml" );
MavenProject generatedArchetypeProject = projectBuilder.build( generatedArchetypePom, localRepository, null );
ModelInterpolator modelInterpolator = (ModelInterpolator)lookup( ModelInterpolator.ROLE );
Model generatedArchetypeModel = modelInterpolator.interpolate( generatedArchetypeProject.getModel(), generatedArchetypePom.getParentFile(), new DefaultProjectBuilderConfiguration(), true );
File archetypeDirectory =
new File( generatedArchetypeDirectory, "src" + File.separator + "main" + File.separator + "resources" );
File archetypeArchive = archetype.archiveArchetype( archetypeDirectory, new File(
generatedArchetypeModel.getBuild().getDirectory() ),
generatedArchetypeModel.getBuild().getFinalName() );
String baseName =
StringUtils.replace( generatedArchetypeProject.getGroupId(), ".", File.separator ) + File.separator
+ generatedArchetypeProject.getArtifactId() + File.separator + generatedArchetypeProject.getVersion()
+ File.separator + generatedArchetypeProject.getBuild().getFinalName();
File archetypeInRepository = new File( centralRepository.getBasedir(), baseName + ".jar" );
File archetypePomInRepository = new File( centralRepository.getBasedir(), baseName + ".pom" );
archetypeInRepository.getParentFile().mkdirs();
FileUtils.copyFile( archetypeArchive, archetypeInRepository );
FileUtils.copyFile( generatedArchetypePom, archetypePomInRepository );
// (4) create our own archetype catalog describing the archetype we just created
ArchetypeCatalog catalog = new ArchetypeCatalog();
Archetype generatedArchetype = new Archetype();
generatedArchetype.setGroupId( generatedArchetypeProject.getGroupId() );
generatedArchetype.setArtifactId( generatedArchetypeProject.getArtifactId() );
generatedArchetype.setVersion( generatedArchetypeProject.getVersion() );
generatedArchetype.setRepository( "http://localhost:" + port + "/repo" );
catalog.addArchetype( generatedArchetype );
ArchetypeCatalogXpp3Writer catalogWriter = new ArchetypeCatalogXpp3Writer();
Writer writer = new FileWriter( catalogFile );
catalogWriter.write( writer, catalog );
IOUtils.closeQuietly( writer );
// (6) create a project form the archetype we just created
String outputDirectory = new File( getBasedir(),
"target" + File.separator + "test-classes" + File.separator + "projects"
+ File.separator + "roundtrip-1-recreatedproject" ).getAbsolutePath();
FileUtils.forceDelete( outputDirectory );
ArchetypeGenerationRequest agr =
new ArchetypeGenerationRequest().setArchetypeGroupId( generatedArchetypeProject.getGroupId() ).
setArchetypeArtifactId( generatedArchetypeProject.getArtifactId() ).
setArchetypeVersion( generatedArchetypeProject.getVersion() ).
setGroupId( "com.mycompany" ).setArtifactId( "myapp" ).setVersion( "1.0-SNAPSHOT" ).
setPackage( "com.mycompany.myapp" ).setProperties( properties ).
setOutputDirectory( outputDirectory ).setLocalRepository( localRepository ).
setArchetypeRepository( "http://localhost:" + port + "/repo/" );
ArchetypeGenerationResult generationResult = archetype.generateProjectFromArchetype( agr );
if ( generationResult.getCause() != null )
After Change
File pom = new File( workingProject, "pom.xml" );
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
MavenRepositorySystemSession repositorySession = new MavenRepositorySystemSession();
repositorySession.setLocalRepositoryManager( new SimpleLocalRepositoryManager( localRepository.getBasedir() ) );
buildingRequest.setRepositorySession( repositorySession );
MavenProject project = projectBuilder.build( pom, buildingRequest ).getProject();
Properties properties = new Properties();
properties.setProperty( "someProperty", "someValue" );
ArchetypeCreationRequest acr = new ArchetypeCreationRequest().setProject( project ).
setLocalRepository( localRepository ).setProperties( properties ).setPostPhase( "package" );
ArchetypeCreationResult creationResult = archetype.createArchetypeFromProject( acr );
if ( creationResult.getCause() != null )
{
throw creationResult.getCause();
}
// (3) create our own archetype catalog properties in memory
File catalogDirectory = new File( getBasedir(), "target" + File.separator + "catalog" );
catalogDirectory.mkdirs();
File catalogFile = new File( catalogDirectory, "archetype-catalog.xml" );
// (5) install the archetype we just created
File generatedArchetypeDirectory = new File( project.getBasedir(),
"target" + File.separator + "generated-sources" + File.separator
+ "archetype" );
File generatedArchetypePom = new File( generatedArchetypeDirectory, "pom.xml" );
ProjectBuildingResult buildingResult = projectBuilder.build( generatedArchetypePom, buildingRequest );
MavenProject generatedArchetypeProject = projectBuilder.build( generatedArchetypePom, buildingRequest ).getProject();
ModelInterpolator modelInterpolator = (ModelInterpolator)lookup( ModelInterpolator.ROLE );
Model generatedArchetypeModel = modelInterpolator.interpolate( generatedArchetypeProject.getModel(), generatedArchetypePom.getParentFile(), new DefaultProjectBuilderConfiguration(), true );
File archetypeDirectory =
new File( generatedArchetypeDirectory, "src" + File.separator + "main" + File.separator + "resources" );
File archetypeArchive = archetype.archiveArchetype( archetypeDirectory, new File(
generatedArchetypeModel.getBuild().getDirectory() ),
generatedArchetypeModel.getBuild().getFinalName() );
String baseName =
StringUtils.replace( generatedArchetypeProject.getGroupId(), ".", File.separator ) + File.separator
+ generatedArchetypeProject.getArtifactId() + File.separator + generatedArchetypeProject.getVersion()
+ File.separator + generatedArchetypeProject.getBuild().getFinalName();
File archetypeInRepository = new File( centralRepository.getBasedir(), baseName + ".jar" );
File archetypePomInRepository = new File( centralRepository.getBasedir(), baseName + ".pom" );
archetypeInRepository.getParentFile().mkdirs();
FileUtils.copyFile( archetypeArchive, archetypeInRepository );
FileUtils.copyFile( generatedArchetypePom, archetypePomInRepository );
// (4) create our own archetype catalog describing the archetype we just created
ArchetypeCatalog catalog = new ArchetypeCatalog();
Archetype generatedArchetype = new Archetype();
generatedArchetype.setGroupId( generatedArchetypeProject.getGroupId() );
generatedArchetype.setArtifactId( generatedArchetypeProject.getArtifactId() );
generatedArchetype.setVersion( generatedArchetypeProject.getVersion() );
generatedArchetype.setRepository( "http://localhost:" + port + "/repo" );
catalog.addArchetype( generatedArchetype );
ArchetypeCatalogXpp3Writer catalogWriter = new ArchetypeCatalogXpp3Writer();
Writer writer = new FileWriter( catalogFile );
catalogWriter.write( writer, catalog );
IOUtils.closeQuietly( writer );
// (6) create a project form the archetype we just created
String outputDirectory = new File( getBasedir(),
"target" + File.separator + "test-classes" + File.separator + "projects"
+ File.separator + "roundtrip-1-recreatedproject" ).getAbsolutePath();
FileUtils.forceDelete( outputDirectory );
ArchetypeGenerationRequest agr =
new ArchetypeGenerationRequest().setArchetypeGroupId( generatedArchetypeProject.getGroupId() ).
setArchetypeArtifactId( generatedArchetypeProject.getArtifactId() ).
setArchetypeVersion( generatedArchetypeProject.getVersion() ).
setGroupId( "com.mycompany" ).setArtifactId( "myapp" ).setVersion( "1.0-SNAPSHOT" ).
setPackage( "com.mycompany.myapp" ).setProperties( properties ).
setOutputDirectory( outputDirectory ).setLocalRepository( localRepository ).
setArchetypeRepository( "http://localhost:" + port + "/repo/" ).setProjectBuildingRequest( buildingRequest );
ArchetypeGenerationResult generationResult = archetype.generateProjectFromArchetype( agr );
if ( generationResult.getCause() != null )